home *** CD-ROM | disk | FTP | other *** search
/ 100 Plus Great Games 2 / 100PLUSV2.BIN / games / TroyReturns.dxr / 00010_Pickup Handlers.ls < prev    next >
Encoding:
Text File  |  2002-01-31  |  8.2 KB  |  204 lines

  1. global pickupSO, pickupData, playerViewpoint, playerLocData
  2.  
  3. on initializePickups
  4.   pickupData = []
  5.   repeat with wPickup = 1 to 16
  6.     wSprite = pickupSO + wPickup
  7.     add(pickupData, [0, 0, 0, point(0, 0), point(0, 0), 0])
  8.     puppetSprite(wSprite, 1)
  9.     set the ink of sprite wSprite to 36
  10.     sprite(wSprite).rotation = 0
  11.     set the loc of sprite wSprite to point(-50, -50)
  12.     sprite(wSprite).locZ = 198
  13.   end repeat
  14. end
  15.  
  16. on addPickup pickupType, pickupVariation, spawnPoint, rMomentum
  17.   validSlot = 0
  18.   repeat with wSlot = 1 to count(pickupData)
  19.     if (pickupData[wSlot][1] = 0) and (validSlot = 0) then
  20.       validSlot = wSlot
  21.     end if
  22.   end repeat
  23.   if validSlot <> 0 then
  24.     wSprite = pickupSO + validSlot
  25.     pickupData[validSlot] = [1, pickupType, pickupVariation, spawnPoint, rMomentum, 400]
  26.     sprite(wSprite).visible = 1
  27.   end if
  28. end
  29.  
  30. on movePickups
  31.   global frameAnimate, playerInventory, playerHealth, frameSkip, updateTextFields, superPowers, rumbleOffset
  32.   frameSkip = frameSkip + 1
  33.   if frameSkip > 2 then
  34.     frameSkip = 1
  35.   end if
  36.   if frameSkip = 1 then
  37.     frameAnimate = frameAnimate + 1
  38.   end if
  39.   pbPoint = playerLocData[3]
  40.   playerBodyRange = rect(pbPoint[1] - 25, pbPoint[2] - 50, pbPoint[1] + 25, pbPoint[2] + 50)
  41.   repeat with wPickup = 1 to count(pickupData)
  42.     wSprite = pickupSO + wPickup
  43.     if pickupData[wPickup][1] = 1 then
  44.       if (findDistance(pickupData[wPickup][4], pbPoint) < 50) and (playerLocData[1] = 1) then
  45.         set the loc of sprite wSprite to point(-50, -50)
  46.         pickupData[wPickup][1] = 0
  47.         pType = pickupData[wPickup][2]
  48.         case pickupData[wPickup][2] of
  49.           1:
  50.             playerInventory[1] = playerInventory[1] + [1, 5, 0][pickupData[wPickup][3]]
  51.             addScore([10, 50, 0][pickupData[wPickup][3]])
  52.             if pickupData[wPickup][3] = 3 then
  53.               if playerHealth < 3 then
  54.                 playerHealth = playerHealth + 1
  55.               else
  56.                 addScore(300)
  57.               end if
  58.               playSound("Gain Heart SFX")
  59.             else
  60.               playSound("Get smiley Face SFX")
  61.             end if
  62.             updateCoinDisplay = 1
  63.           2:
  64.             addScore(500)
  65.             superPowers = 1
  66.             playSound("Gain Heart SFX")
  67.         end case
  68.         next repeat
  69.       end if
  70.       pickupVar = pickupData[wPickup][3]
  71.       case pickupData[wPickup][2] of
  72.         1:
  73.           rpoint = point(random(40), random(40)) - 20
  74.           if random(2) = 1 then
  75.             addparticle(pickupData[wPickup][4] + rpoint, 0, 6)
  76.           end if
  77.           groundCheck = checkSolidpoint(pickupData[wPickup][4] + point(0, 18))
  78.           celingCheck = checkSolidpoint(pickupData[wPickup][4] - point(0, 18))
  79.           if groundCheck[1] = 1 then
  80.             if pickupVar = 3 then
  81.               pickupData[wPickup][5][2] = 0
  82.             else
  83.               pickupData[wPickup][5][2] = 0 - integer(abs(pickupData[wPickup][5][2]) * 3 / 4)
  84.             end if
  85.             if groundCheck[2] = 2 then
  86.               pickupData[wPickup][5] = pickupData[wPickup][5] + point(1, 0)
  87.             else
  88.               if groundCheck[2] = 3 then
  89.                 pickupData[wPickup][5] = pickupData[wPickup][5] - point(1, 0)
  90.               end if
  91.             end if
  92.           else
  93.             if celingCheck[1] = 1 then
  94.               pickupData[wPickup][5][2] = integer(abs(pickupData[wPickup][5][2]))
  95.             else
  96.               pickupData[wPickup][5][2] = pickupData[wPickup][5][2] + 1
  97.               if pickupData[wPickup][5][2] > 16 then
  98.                 pickupData[wPickup][5][2] = 16
  99.               end if
  100.             end if
  101.           end if
  102.           bounceCoins = 1
  103.           pickupData[wPickup][5][1] = 0
  104.           pickupData[wPickup][4] = pickupData[wPickup][4] + pickupData[wPickup][5]
  105.           pickupData[wPickup][6] = pickupData[wPickup][6] - 1
  106.           if pickupData[wPickup][6] > 150 then
  107.             memNum = (frameAnimate mod 8) + 1
  108.             if pickupVar = 3 then
  109.               set the member of sprite wSprite to "Shroom"
  110.             else
  111.               set the member of sprite wSprite to ["Silver Coin ", "Happy Coin ", "Shroom "][pickupVar] & string(memNum)
  112.             end if
  113.             set the loc of sprite wSprite to pickupData[wPickup][4] - playerViewpoint + rumbleOffset
  114.             pickupData[wPickup][6] = pickupData[wPickup][6] - 1
  115.           else
  116.             if pickupData[wPickup][6] > 0 then
  117.               if (pickupData[wPickup][6] mod 3) = 0 then
  118.                 sprite(wSprite).visible = 0
  119.               else
  120.                 sprite(wSprite).visible = 1
  121.               end if
  122.               memNum = (frameAnimate mod 8) + 1
  123.               if frameSkip = 1 then
  124.                 if pickupVar = 3 then
  125.                   set the member of sprite wSprite to "Shroom"
  126.                 else
  127.                   set the member of sprite wSprite to ["Silver Coin ", "Happy Coin ", "Shroom "][pickupVar] & string(memNum)
  128.                 end if
  129.               end if
  130.               set the loc of sprite wSprite to pickupData[wPickup][4] - playerViewpoint + rumbleOffset
  131.               pickupData[wPickup][6] = pickupData[wPickup][6] - 1
  132.             else
  133.               set the loc of sprite wSprite to point(-50, -50)
  134.               sprite(wSprite).visible = 1
  135.               pickupData[wPickup][1] = 0
  136.             end if
  137.           end if
  138.         2:
  139.           set the member of sprite wSprite to ["Power Plant"][pickupVar]
  140.           set the loc of sprite wSprite to pickupData[wPickup][4] - playerViewpoint + rumbleOffset
  141.         3:
  142.           groundCheck = checkSolidpoint(pickupData[wPickup][4] + point(0, 6))
  143.           celingCheck = checkSolidpoint(pickupData[wPickup][4] - point(0, 12))
  144.           if groundCheck[1] = 1 then
  145.             pickupData[wPickup][5][2] = 0 - integer(abs(pickupData[wPickup][5][2]) * 5 / 6)
  146.             if groundCheck[2] = 2 then
  147.               pickupData[wPickup][5] = pickupData[wPickup][5] + point(1, 0)
  148.             else
  149.               if groundCheck[2] = 3 then
  150.                 pickupData[wPickup][5] = pickupData[wPickup][5] - point(1, 0)
  151.               end if
  152.             end if
  153.           else
  154.             if celingCheck[1] = 1 then
  155.               pickupData[wPickup][5][2] = integer(abs(pickupData[wPickup][5][2]))
  156.             else
  157.               pickupData[wPickup][5][2] = pickupData[wPickup][5][2] + 1
  158.               if pickupData[wPickup][5][2] > 18 then
  159.                 pickupData[wPickup][5][2] = 18
  160.               end if
  161.             end if
  162.           end if
  163.           if checkSolidpoint(pickupData[wPickup][4] + point(12, 0))[1] = 1 then
  164.             pickupData[wPickup][5][1] = 0 - abs(pickupData[wPickup][5][1])
  165.           else
  166.             if checkSolidpoint(pickupData[wPickup][4] - point(12, 0))[1] = 1 then
  167.               pickupData[wPickup][5][1] = abs(pickupData[wPickup][5][1])
  168.             end if
  169.           end if
  170.           if groundCheck[2] = 11 then
  171.             if pickupData[wPickup][5][1] > 5 then
  172.               pickupData[wPickup][5][1] = pickupData[wPickup][5][1] - 1
  173.             else
  174.               if pickupData[wPickup][5][1] < -5 then
  175.                 pickupData[wPickup][5][1] = pickupData[wPickup][5][1] + 1
  176.               end if
  177.             end if
  178.             if pickupData[wPickup][5][2] > 3 then
  179.               pickupData[wPickup][5][2] = pickupData[wPickup][5][2] - 1
  180.             else
  181.               if pickupData[wPickup][5][2] < -3 then
  182.                 pickupData[wPickup][5][2] = pickupData[wPickup][5][2] + 1
  183.               end if
  184.             end if
  185.             pickupData[wPickup][5][2] = pickupData[wPickup][5][2] - 1
  186.           end if
  187.           pickupData[wPickup][4] = pickupData[wPickup][4] + pickupData[wPickup][5]
  188.           pickupData[wPickup][6] = pickupData[wPickup][6] - 1
  189.           bSpinType = [-3, -6, -9, 3, 6, 9][(wPickup mod 6) + 1]
  190.           coreSpins = abs(500 - pickupData[wPickup][6]) * bSpinType
  191.           set the member of sprite wSprite to ["Bone A", "Bone B", "Bone C", "Bone D", "Skull"][pickupVar]
  192.           sprite(wSprite).rotation = coreSpins
  193.           set the loc of sprite wSprite to pickupData[wPickup][4] - playerViewpoint + point(25, 0) + rumbleOffset
  194.           pickupData[wPickup][6] = pickupData[wPickup][6] - 1
  195.       end case
  196.     end if
  197.   end repeat
  198.   if updateTextFields = 1 then
  199.     if updateCoinDisplay = 1 then
  200.       member("Coin Display").text = string(playerInventory[1])
  201.     end if
  202.   end if
  203. end
  204.